import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Delete {
    public static void main(String[] args) throws IOException {
        // 1. 用户输入路径
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入需要扫描的根路径: ");
        String rootDirPath = sc.nextLine();

        // 2. 如果输入的根目录不存在,之间返回
        File file = new File(rootDirPath);
        if(!file.isDirectory()){
            System.out.println("您输入的目录错误!退出程序!");
        }
        // 3. 用户输入需要查找的文件名中的内容
        System.out.print("请输入要查找的文件名中含有的字符: ");
        String name = sc.nextLine();

        // 4. 递归遍历目录,并把满足条件的路径存入 result 中
        List<File> result = new ArrayList<>();
        scanDir(file,name,result);

        // 5. 打印result中的内容 由用户决定是否删除
        if(result.size() == 0) {
            System.out.println("没有要找的文件!");
            return;
        }
        for(File f : result){
            System.out.println(f.getCanonicalFile());
            System.out.println("请问是否删除这个文件(Y/N)");
            String decision = sc.nextLine();
            if(decision.equals("Y")){
                f.delete();
                System.out.println("删除成功!");
                return;
            }
        }
    }

    private static void scanDir(File file, String name, List<File> result) {
        File[] files = file.listFiles();
        // 判断一下 files 是不是空或者files是不是没有东西
        if (files == null || files.length == 0) {
            //空目录
            return;
        }

        for(File f:files){
            if(f.isDirectory()){
                //是目录就进行查找
                scanDir(f,name,result);
            }else{
                // 不是目录就判断名字是否带有需要查找的关键字 使用contains方法
                if(f.getName().contains(name)){
                    result.add(f.getAbsoluteFile());
                }
            }
        }
    }

}
